import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIntValidator,QDoubleValidator,QRegExpValidator #最后一个是正则表达式校验器
from PyQt5.QtCore import QRegExp #正则表达式类
 
class QLineEditValidator(QWidget):
    def __init__(self):
        super(QLineEditValidator, self).__init__()
        self.initUI()
 
    def initUI(self):
        self.setWindowTitle('校验器')
        #创建表单布局
        formLayout=QFormLayout()
 
        intLineEdit=QLineEdit()
        doubleLineEdit=QLineEdit()
        validatorLineEdit=QLineEdit()
 
        formLayout.addRow('整数类型',intLineEdit)
        formLayout.addRow('浮点类型', doubleLineEdit)
        formLayout.addRow('数字和字母',validatorLineEdit)
 
        intLineEdit.setPlaceholderText('整型[1,99]')
        doubleLineEdit.setPlaceholderText('浮点类型[-360,360]')
        validatorLineEdit.setPlaceholderText('数字和字母')
 
        #整数校验器[1,99]
        intValidator=QIntValidator(self) #因为此函数需要一个QWidget对象作为参数，所以把自己传进去了
        intValidator.setRange(1,99)#试了试可以输入0？？？
        #浮点校验器[-360,360],精度:小数点后2位
        doubleValidator=QDoubleValidator(self)#传self原因同上
        doubleValidator.setRange(-360,360)#翻车了-800.23也行
        doubleValidator.setNotation(QDoubleValidator.StandardNotation)
        #设置精度，小数点2位
        doubleValidator.setDecimals(2)
 
        #字符和数字
        reg=QRegExp('[a-zA-Z0-9]+$') #正则表达式
        validtor=QRegExpValidator(self)#传self原因同上
        validtor.setRegExp(reg)
 
        #设置校验器
        intLineEdit.setValidator(intValidator)
        doubleLineEdit.setValidator(doubleValidator)
        validatorLineEdit.setValidator(validtor)
 
        self.setLayout(formLayout)
        return
 
 
if __name__=='__main__':
    app=QApplication(sys.argv)
    main=QLineEditValidator()
    main.show()
    sys.exit(app.exec_())
 
 
